package de.akabahn.ebd.stw.zdxfc.prs.tco;

import org.apache.log4j.Logger;

import de.akabahn.ebd.stw.zdxfc.prs.tco.elemente.Signal;

/**
 * Hintergrundtask, der in regelmaessigen Abstaenden laeuft um zeitabhaengige Bedingungen zu pruefen.<br>
 * Die regelmaessige Ausfuehrung wird durch den <code>ScheduledExecutorService</code> verwaltet.
 * 
 * @author Peter Eimann
 * @since 1.0
 * @version 1.1
 */
public class ZDXFCTcoBackgroundTask implements Runnable {
	private static final Logger LOG = Logger.getLogger(ZDXFCTcoBackgroundTask.class);

	private ZDXFCTcoMain main;
	/**
	 * Initialisierung der Klasse
	 * 
	 * @param main Referenz auf die Hauptklasse
	 */
	public ZDXFCTcoBackgroundTask(ZDXFCTcoMain main) {
		this.main = main;
	}
	
	/**
	 * Beim Aufruf dieser Methode werden folgende Pruefungen durchgefuehrt:<br>
	 * <ul>
	 * <li>Wenn der Verschlussmelder eines Signals blinken soll, wird <code>Signal.toggleBlinkTakt()</code> aufgerufen</li>
	 * </ul>
	 * 
	 * @see Signal#toggleBlinkTakt()
	 */
	@Override
	public void run() {
		Signal signal = null;
		
		try {
			for (String id : main.getSignale().keySet()) {
				if (id.endsWith("VS")) {
					signal = main.getSignal(id);
					
					if (signal.isBlinkt()) {
						signal.toggleBlinkTakt();
						main.repaint();
					}
				}
			}
		} catch (Exception e) {
			LOG.error("Exception caught in background task", e);
		}
	}

}
